# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Drive.V3.Model.DriveCapabilities do
  @moduledoc """
  Output only. Capabilities the current user has on this shared drive.

  ## Attributes

  *   `canAddChildren` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can add children to folders in this shared drive.
  *   `canChangeCopyRequiresWriterPermissionRestriction` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this shared drive.
  *   `canChangeDomainUsersOnlyRestriction` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can change the `domainUsersOnly` restriction of this shared drive.
  *   `canChangeDriveBackground` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can change the background of this shared drive.
  *   `canChangeDriveMembersOnlyRestriction` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can change the `driveMembersOnly` restriction of this shared drive.
  *   `canChangeSharingFoldersRequiresOrganizerPermissionRestriction` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can change the `sharingFoldersRequiresOrganizerPermission` restriction of this shared drive.
  *   `canComment` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can comment on files in this shared drive.
  *   `canCopy` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can copy files in this shared drive.
  *   `canDeleteChildren` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can delete children from folders in this shared drive.
  *   `canDeleteDrive` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can delete this shared drive. Attempting to delete the shared drive may still fail if there are untrashed items inside the shared drive.
  *   `canDownload` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can download files in this shared drive.
  *   `canEdit` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can edit files in this shared drive
  *   `canListChildren` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can list the children of folders in this shared drive.
  *   `canManageMembers` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can add members to this shared drive or remove them or change their role.
  *   `canReadRevisions` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can read the revisions resource of files in this shared drive.
  *   `canRename` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can rename files or folders in this shared drive.
  *   `canRenameDrive` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can rename this shared drive.
  *   `canResetDriveRestrictions` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can reset the shared drive restrictions to defaults.
  *   `canShare` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can share files or folders in this shared drive.
  *   `canTrashChildren` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether the current user can trash children from folders in this shared drive.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :canAddChildren => boolean() | nil,
          :canChangeCopyRequiresWriterPermissionRestriction => boolean() | nil,
          :canChangeDomainUsersOnlyRestriction => boolean() | nil,
          :canChangeDriveBackground => boolean() | nil,
          :canChangeDriveMembersOnlyRestriction => boolean() | nil,
          :canChangeSharingFoldersRequiresOrganizerPermissionRestriction => boolean() | nil,
          :canComment => boolean() | nil,
          :canCopy => boolean() | nil,
          :canDeleteChildren => boolean() | nil,
          :canDeleteDrive => boolean() | nil,
          :canDownload => boolean() | nil,
          :canEdit => boolean() | nil,
          :canListChildren => boolean() | nil,
          :canManageMembers => boolean() | nil,
          :canReadRevisions => boolean() | nil,
          :canRename => boolean() | nil,
          :canRenameDrive => boolean() | nil,
          :canResetDriveRestrictions => boolean() | nil,
          :canShare => boolean() | nil,
          :canTrashChildren => boolean() | nil
        }

  field(:canAddChildren)
  field(:canChangeCopyRequiresWriterPermissionRestriction)
  field(:canChangeDomainUsersOnlyRestriction)
  field(:canChangeDriveBackground)
  field(:canChangeDriveMembersOnlyRestriction)
  field(:canChangeSharingFoldersRequiresOrganizerPermissionRestriction)
  field(:canComment)
  field(:canCopy)
  field(:canDeleteChildren)
  field(:canDeleteDrive)
  field(:canDownload)
  field(:canEdit)
  field(:canListChildren)
  field(:canManageMembers)
  field(:canReadRevisions)
  field(:canRename)
  field(:canRenameDrive)
  field(:canResetDriveRestrictions)
  field(:canShare)
  field(:canTrashChildren)
end

defimpl Poison.Decoder, for: GoogleApi.Drive.V3.Model.DriveCapabilities do
  def decode(value, options) do
    GoogleApi.Drive.V3.Model.DriveCapabilities.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Drive.V3.Model.DriveCapabilities do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
